/*
 * SituacionJugadores.java
 *
 * Created on 16 de julio de 2006, 13:19
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package futbol.tacticas;

import futbol.General;
import java.awt.Point;

/**
 *
 * @author Administrador
 */
public class SituacionJugadores {
    Point[] misJugadores=new Point[11];
    Point[] contrario=new Point[11];
    Point bola;
    
    public SituacionJugadores(Point[] misJugadores, Point[] contrario, Point bola){
        this.misJugadores=misJugadores;
        this.contrario=contrario;
        this.bola=bola;
    }
    public Point[] getMisJugadores(){
        return misJugadores;
    }
    public Point[] getContrario(){
        return contrario;
    }
    public Point getBola(){
        return bola;
    }
    private boolean estaEnVector(int vector[], int num){
        if (vector==null) return false;
        for (int n=0;n<vector.length;n++)
            if (vector[n]==num)
                return true;
        return false;
    }
    public int[] getInfoMasCercano(Point[] lista, Point punto, int excluir[], boolean soloDelante){
        int dev[]={-1,999};
        int nDis;
        for (int n=0;n<lista.length;n++){
            if (!estaEnVector(excluir, n)){
                if (!soloDelante || lista[n].getX()>punto.getX()){
                    nDis=(int)General.getDistancia(lista[n].getX(), lista[n].getY(), punto.getX(), punto.getY());
                    if (nDis<dev[1]){
                        dev[0]=n;
                        dev[1]=nDis;
                    }
                }
            }
        }
        return dev;
    }
    
    public boolean estoyMasCercaDeBola(){
        int dev1[]=getInfoMasCercano(misJugadores, bola, null, false);
        int dev2[]=getInfoMasCercano(contrario, bola, null, false);
        return dev1[1]<dev2[1];
    }

    public int getMasCercanoDeBola(){
        int dev1[]=getInfoMasCercano(misJugadores, bola, null, false);
        return dev1[0];
    }
    
    public int getSiguienteJugador(int nJugador){
        int nExc[]={nJugador};
        int dev1[]=getInfoMasCercano(misJugadores,misJugadores[nJugador],nExc, true);
        return dev1[0];
    }
    
    public int getContrarioMasCerca(int nJugador){
        int dev1[]=getInfoMasCercano(contrario,misJugadores[nJugador],null,false);
        return dev1[0];
    }
    
    public int getContrarioMasCerca(double x, double y){
        Point p=new Point();
        p.setLocation(x,y);
        int dev1[]=getInfoMasCercano(contrario,p,null,false);
        return dev1[0];
    }
    
    public int getMiJugadorMasCerca(double x, double y){
        Point p=new Point();
        p.setLocation(x,y);
        int dev1[]=getInfoMasCercano(misJugadores,p,null,false);
        return dev1[0];
    }
            
}
